﻿/*    
Nemulation: A .NET based framework/platform for virtualization applications
Copyright (C) 2011 Bryan Perris

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NEmuVirtualHost.Configuration
{
    public sealed class HostConfigEnumerator : IEnumerator<KeyValuePair<string, string>>
    {
        private HostConfigReader m_Reader;
        private IEnumerator<string> m_KeyEnumerator;
        private string m_CurrentKey;

        internal HostConfigEnumerator(HostConfigReader reader)
        {
            m_Reader = reader;
            m_KeyEnumerator = reader.Keys.GetEnumerator();
            m_CurrentKey = "";
        }

        public KeyValuePair<string, string> Current
        {
            get 
            {
                return new KeyValuePair<string, string>(m_CurrentKey, (string)m_Reader.GetConfig(m_CurrentKey));
            }
        }

        public void Dispose()
        {
            m_KeyEnumerator.Dispose();
        }

        object System.Collections.IEnumerator.Current
        {
            get { return Current; }
        }

        public bool MoveNext()
        {
            bool result = m_KeyEnumerator.MoveNext();
            m_CurrentKey = m_KeyEnumerator.Current;
            return result;
        }

        public void Reset()
        {
            m_KeyEnumerator.Reset();
            m_CurrentKey = "";
        }
    }
}
